在開始實作DynamoDB操作的程式設計之前,這邊進一步了解一些DynamoDB介面及AWS SDK for JAVA,以便更清楚了解其中的工作與差異。
AWS SDK對於DynamoDB的操作提供三種類型的介面
但是如下圖所示的架構中,我們先從底層的DynamoDB Low-Level Interface來了解一下當中的要素。
這邊或許不這麼重要,因為透過SDK都已經支援處理了,但是可以了解AWS服務大多透過HTTP(S)協定、表頭認證資訊、JSON資料傳輸格式等提供服務介面,也因此我們可能需要多了解JSON資料傳輸的特性及使用程式語言的支援狀況,以進一步小心處理不同型別的資料類型可能會遇到的問題。
DynamoDB有那些資料類型就是一定要知道的
完整的資料類型細節可以在上面的AWS文件連結中瀏覽,按照分類來說可以為以下
- 純量類型 – 純量類型只能代表一個值。純量類型包括數字、字串、二進位、布林值與 Null。
- 文件類型 – 文件類型可代表具有巢狀屬性的複雜結構,如 JSON 文件中所示。文件類型為清單與映射。
- 集合類型 – 集合類型可代表多個純量值。集合類型包括字串集、數字集與二進位集。
這些資料類型在SDK中實作對應Java的基本類型或物件,不過也因此在操作上會有所狀況,如NonNull的資料型別,這些在之後實作的部分再進行了解。
屬性命名自然也受DynamoDB保留字影響,就像之前遇到使用保留字名稱時會需要用#符號(表達式屬性名稱代換名稱的操作,所以最好還是能避開。
比較特別的就是二進位資料,如果你記得之前我們處理Lambda Request/Response當中有個屬性叫做isBase64Encoded,這即是因為當使用JSON做為資料傳輸而需要傳送二進位資料時,我們會需要進行base64的加解碼。